<?php
/*
Plugin Name: 最沙发的人
Plugin URI: http://fairyfish.net/
Description: 本人代表广大 blogger 仅此插件献给沙发党以表彰他们对博客做出的杰出奉献
Version: 沙发四代
Author: 抢不到沙发的人
Author URI: http://fairyfish.net/

安装：
自己琢磨去！

版本更新：
2007年11月09日02点，沙发一代诞生！
2007年11月10日01点，沙发二代诞生，支持 Widget！
2007年11月12日01点，沙发三代诞生，支持修改 Widget 标题！
2007年11月18日23点，沙发四代诞生，支持修改 Widget 标题！
*/

function update_sofa(){
	global $wpdb;

	$first_commentors = array(); //初始化沙发党数组

	$q = "SELECT DISTINCT comment_post_id FROM $wpdb->comments WHERE comment_type ='' AND user_id = 0 AND comment_approved = '1'"; 
	$have_comment_post_ids = $wpdb->get_results($q); //获取有留言的日志ID
	foreach ($have_comment_post_ids as $have_comment_post_id){
		$q = "SELECT comment_author FROM $wpdb->comments WHERE comment_type ='' AND user_id = 0 AND comment_approved = '1' AND comment_post_id = $have_comment_post_id->comment_post_id order by comment_date limit 1";
		$first_comment = $wpdb->get_results($q);  //获取沙发党
		array_push($first_commentors,$first_comment[0] -> comment_author); //添加进沙发党数组
	}
	
	$first_commentors = (array_count_values ($first_commentors)); //统计
	arsort($first_commentors); //排序
	
	$first_commentors_author = array_keys($first_commentors);//获取沙发党名字
	
	$sofa = array(); //初始化写入数据库的沙发数组
	
	for($i=0; $i<3; $i++){
		$title="";
		if($i==0)	$title = "状元：";
		if($i==1)	$title = "榜眼：";
		if($i==2)	$title = "探花：";
		$q = "SELECT comment_author_url FROM $wpdb->comments WHERE comment_type ='' AND user_id = 0 AND comment_approved = '1' AND comment_author_url !='' AND comment_author = '$first_commentors_author[$i]' limit 1";
		$first_comment_url = $wpdb->get_results($q); //获取沙发党的博客
		
		if($first_comment_url){
			$sofa[$i] = $title . '<a href="' . $first_comment_url[0] -> comment_author_url . '" title="' . $first_commentors_author[$i].'">' . $first_commentors_author[$i] . '</a>(' . $first_commentors["$first_commentors_author[$i]"].')';
		} else {
			$sofa[$i] = $title . $first_commentors_author[$i] . '('.$first_commentors["$first_commentors_author[$i]"] . ')';
		}
	}
	update_option('sofa',$sofa);	//把沙发排名数据更新到数据库中
}

function sofa_comment_post ($comment_ID) {	
	global $user_ID;
	if ( !$user_ID ){
		update_sofa();
	}
}

add_action('comment_post', 'sofa_comment_post');


function get_sofa(){
	$output = ""; //初始化输出字符串	
	$output .= '<ul class="wp_sofa">';
	
	$sofa = get_option('sofa');	//从数据库中获取沙发排名数据
	
	if(!$sofa[0]){	//如果是第一次使用，把沙发排名数据写入数据库
		update_sofa();
		$sofa = get_option('sofa');	//重新获取
	}
	
	for($i=0; $i<count($sofa); $i++){
		$output .= '<li>'. $sofa[$i] .'</li>';
	}
	
	$output .= '</ul>';	
	return $output;//输出沙发党前三甲
}

function sofa(){
	$output = get_sofa();
	echo $output;
}

function widget_sidebar_sofa() {
	if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
		return;

	function widget_sofa($args) {
	    extract($args);
		echo $before_widget;
		
		$sofa_options = get_option('widget_sofa');
		$title = $sofa_options['title'];

		if ( empty($title) )	$title = '最沙发的人'; //设置默认的标题
		
		echo $before_title . $title . $after_title;

		$output = get_sofa();
		echo $output;

		echo $after_widget;
	}

	register_sidebar_widget('WP-Sofa', 'widget_sofa');
	
	function widget_sofa_options() {			
		$sofa_options = $new_sofa_options = get_option('widget_sofa'); //获取数据库中的 widget_sofa
		if ( $_POST["sofa_submit"] ) { //如果提交更新
			$new_sofa_options['title'] = strip_tags(stripslashes($_POST["sofa_title"]));
			if ( $sofa_options != $new_sofa_options ) { //如果有更新
				$sofa_options = $new_sofa_options;
				update_option('widget_sofa', $sofa_options);
			}
		}
		$title = attribute_escape($sofa_options['title']);
?>
		<p><label for="wp_sofa_title"><?php _e('Title:'); ?> <input style="width: 250px;" id="sofa_title" name="sofa_title" type="text" value="<?php echo $title; ?>" /></label></p>
		<input type="hidden" id="sofa_submit" name="sofa_submit" value="1" />
<?php
	}
	
	register_widget_control('WP-Sofa', 'widget_sofa_options', 300, 90);
}

add_action('plugins_loaded', 'widget_sidebar_sofa');
?>